Virtualization techniques are commonplace in modern data-processing centers; a typical example is the implementation of virtual machines (i.e., emulations by software of physical machines). The virtual machines may be used in a number of applications—for example, for deploying virtual appliances. A virtual appliance is a software solution comprising one or more virtual machines, each one with one or more application programs (for performing specific user tasks) and a Just Enough Operating System, or JeOS (i.e., a limited operating system specifically tailored to support the application programs). The virtual appliance is encapsulated in a pre-built, self-contained package, which is managed as a unit; this provides a simplified management (i.e., development, deployment and maintenance), and allows provisioning corresponding turnkey software services in a very fast way.
As a further advantage, each virtual machine may be organized into multiple virtual disks (each one emulating a physical disk). Each virtual disk may be deployed as a corresponding virtual disk image (i.e., a physical file that defines the whole virtual disk).
For example, in this way it is possible to separate the operating system from the application programs of the virtual machine. This simplifies the maintenance of the application programs; indeed, it is now possible to download a new virtual disk with an updated version of the application programs, turn offline the virtual machine, replace the virtual disk of the application programs, and then turn online the virtual machine again. Moreover, this allows changing the operating system of the virtual machine by simply replacing its virtual disk. In addition or in alternative, it is also possible to separate the application programs into different virtual disks for their execution components (i.e., binary files) and data components (i.e., configuration and/or information files); this allows updating the execution components of the application programs without losing its data components by simply replacing the corresponding virtual disks.
A problem of the virtual machines organized into multiple virtual disks is the difficulty of controlling the usage of their application programs (or any other software artifacts) to ensure compliance with license entitlements (or any other usage entitlements) applicable in the data-processing center. This problem is particularly acute in large virtual appliances—for example, conforming to the Service Oriented Architecture, or SOA (providing a suite of loosely coupled services). Indeed, in this case each virtual appliance may comprise multiple application tiers, each one of them in turn comprising multiple virtual machines (for example, a typical web application with a web tier implementing a presentation logic, an application server tier implementing a business logic, and a back-end database tier implementing a data management logic).
In order to control the usage of the application programs comprised in the different virtual disks, it is possible to use a standard licensing tool that interacts with each virtual machine and possibly with an underlying hardware hosting them. For example, US-A-2007/0180450 and US-A-2009/0328225 (the entire disclosures of which are herein incorporated by reference) describe techniques for verifying whether a given software application may be started in a virtual machine according to the available license entitlements. Moreover, US-A-2011/0047624 (the entire disclosure of which is herein incorporated by reference) describes the use of a binding agent that communicates with a license enforcement module comprised in each virtual machine; the binding agent binds the license enforcement modules in mutual exclusion to the underlying hardware (for example, uniquely defined by its Media Access Control (MAC) address) so as to ensure that a single license enforcement module is allowed to run on this hardware at any time.
However, the above-mentioned techniques require the modification of the virtual machines (for example, to inject corresponding licensing agents).
In any case, this requires that any new virtual disk should be attached to a corresponding virtual machine before verifying the compliance of its application programs with the available license entitlements (so that corresponding actions—for example, preventing their execution—may be taken).